// 数组去重

/**
 * * 实现数组去重第 1 种方法 (forEach + indexOf)
 * @param {Array} arr 数组
 * @returns Array
 */
export function unique(arr) {
  const result = [];
  arr.forEach(item => {
    // 如果 result 数组中，不存在当前元素，就添加进数组
    if (result.indexOf(item) === -1) {
      result.push(item);
    }
  });
  return result;
}


/**
 * * 实现数组去重第 2 种方法 (forEach + obj)
 * @param {Array} arr 数组
 * @returns Array
 */
export function unique2(arr) {
  const result = [];
  const obj = {};
  arr.forEach(item => {
    // 判断，如果对象中当前的属性不存在，就添加属性
    if (obj[item] === undefined) {
      obj[item] = true;
      // 将当前属性添加到数组
      result.push(item);
    }
  })
  return result;
}


/**
 * * 实现数组去重第 3 种方法 (Set)
 * @param {Array} arr 数组
 * @returns Array
 */
export function unique3(arr) {
  // 1. 将数组转换为集合（集合里的元素都是唯一的，在创建 Set 实例的时候就是自动去重）
  // 2. 将集合转换为数组
  // let set = new Set(arr);
  // let result = [...set]
  // return result;

  // 简便写法
  return [...new Set(arr)]
}